Data communication systems often need to provide the ability to communicate a clock signal, in addition to a stream of data. One-typical method of accomplishing this goal is to use Manchester-encoding of the data. Manchester-encoded data provides a means of embedding the clock signal into the data signal.
After receiving Manchester-encoded data, a receiving side of the data communication system has to decode the data and extract the clock signal. However, because of the method used in Manchester-encoding, a continuous string of ones is indistinguishable from a continuous string of zeroes. Thus, Manchester decoders which are operable to decode Manchester-encoded data have to be initialized in order to properly decode an all ones or all zeroes data stream.
Conventional Manchester decoders use measurements of both the rising edges and the falling edges of the Manchester-encoded data in order to decode the data and extract the clock signal. Disadvantages associated with these Manchester decoders include duty cycle distortion effects as a result of the rising edge measurements and the falling edge measurements. In addition, these Manchester decoders typically require a first-in, first-out or other means to synchronize the extracted clock signal to a local clock.